Solving 10385 - Duathlon (Ternary search)
[andmenj-acm.git] / 10161 - Ant on a chessboard / 10161.cpp
blob114d0e52b6e53800aae2e4064a3c46b951e26dbd
1 /*
2 Problem: 10161 - Ant on a chessboard
3 Andrés Mejía-Posada (andmej@gmail.com)
4 */
5 using namespace std;
6 #include <algorithm>
7 #include <iostream>
8 #include <iterator>
9 #include <sstream>
10 #include <fstream>
11 #include <cassert>
12 #include <climits>
13 #include <cstdlib>
14 #include <cstring>
15 #include <string>
16 #include <cstdio>
17 #include <vector>
18 #include <cmath>
19 #include <queue>
20 #include <deque>
21 #include <stack>
22 #include <list>
23 #include <map>
24 #include <set>
26 int main(){
27 int n;
28 while (scanf("%d", &n) && n){
29 int cascara = 1;
30 while (n > cascara*cascara) cascara++;
31 int empieza = (cascara-1)*(cascara-1)+1;
32 int termina = cascara*cascara;
33 int longitud = termina - empieza + 1;
34 int posicion = n - empieza + 1;
35 if (cascara & 1) posicion = longitud - posicion + 1;
36 int fila, columna;
37 int mitad = longitud / 2;
38 if (posicion == mitad + 1) fila = columna = cascara;
39 else if (posicion <= mitad){
40 fila = cascara, columna = posicion;
41 }else{
42 columna = cascara, fila = longitud - posicion + 1;
44 printf("%d %d\n", columna, fila);
46 return 0;